    precision mediump float;

    uniform mat4 uMMatrix;
    uniform mat4 uMVMatrix; // model-view matrix (model -> view space)
    uniform mat4 uPMatrix; // projection matrix (view -> projection space)


    attribute vec3 aVertexNormal;
    attribute vec3 aPosition;


    varying vec3 vFragPosition;
    varying vec3 vNormal;




    void main() {

        vFragPosition = vec3(uMMatrix * vec4(aPosition, 1.0));
        vNormal = aVertexNormal;

        gl_Position = uPMatrix * uMVMatrix * vec4(aPosition, 1.0);

    }